package test10;

import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * 3. 分析以下需求，并用代码实现
 * 模拟歌曲复制和删除过程：假设在D：\\songs文件夹中存在一些歌曲(均为mp3格式)
 * 循环显示该菜单：请选择您要进行的操作：1：查询所有歌曲   2：根据歌曲名称复制  3：根据歌曲名称删除 4: 退出
 * 举例：
 * 用户输入：1
 * 存在以下歌曲：
 * 蒙娜丽莎的眼泪
 * 烟花易冷
 * 上海滩
 * 小苹果
 * 夜空中最亮的星
 * <p>
 * 用户输入：2
 * 请输入要复制的歌曲名称: 上海滩
 * 请输入存储路径: E:\\songs  (说明:该路径如果存在则不创建,不存在则创建)
 * 复制结果: 歌曲上海滩已经成功复制到E:\\songs目录中
 * <p>
 * 用户输入：3
 * 请输入要删除的歌曲名称: 上海滩
 * 删除结果: 歌曲上海滩已经成功删除
 * <p>
 * 用户输入: 4
 * 退出系统
 */
public class TestDemo03 {
    static Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) throws IOException {

        File dir = new File("D:\\songs");
        while (true) {
            System.out.println("请选择您要进行的操作：1：查询所有歌曲   2：根据歌曲名称复制  3：根据歌曲名称删除 4: 退出");
            String c = scanner.next();
            switch (c) {
                case "1":
                    methodSelete(dir);//查询所有歌曲Select
                    break;
                case "2":
                    methodCopy(dir);//根据歌曲名称复制
                    break;
                case "3":
                    methodDelete(dir);//根据歌曲名称删除
                    break;
                case "4":
                    //退出
                    System.out.println("拜拜");
                    System.exit(0);//终止当前正在运行的 Java 虚拟机。
                    break;
                default:
                    System.out.println("输入有误");
                    break;
            }
        }
    }

    private static void methodDelete(File dir) {
        File[] files = dir.listFiles();
        ArrayList<String> list = new ArrayList<>();
        System.out.println("请输入您要删除的歌曲名：");
        String songName = scanner.next();
        if (files != null) {
            for (int i = 0; i < files.length; i++) {
                String name = files[i].getName();
                list.add(name);
            }

            if (list.contains(songName + ".mp3")) {
                File file = new File(dir, songName + ".mp3");
                file.delete();
                System.out.println(songName + "删除成功");
            } else {
                System.out.println("此歌曲不存在");
            }

        }
    }

    private static void methodCopy(File dir) throws IOException {
        File[] files = dir.listFiles();
        ArrayList<String> list = new ArrayList<>();
        System.out.println("请输入您要复制的歌曲名：");
        String songName = scanner.next();
        if (files != null) {
            for (int i = 0; i < files.length; i++) {
                String name = files[i].getName();
                list.add(name);
            }

            if (list.contains(songName + ".mp3")) {

                //如果要复制的文件路径不存在，则创建。
                File file = new File("E:\\songs");
                if (!file.exists()) {
                    file.mkdirs();
                }
                FileInputStream fis = new FileInputStream(dir + "\\" + songName + ".mp3");
                FileOutputStream fos = new FileOutputStream(file + "\\" + songName + ".mp3");
                int len;
                byte[] bytes = new byte[1024];

                while ((len = fis.read(bytes)) != -1) {
                    fos.write(bytes, 0, len);
                }
                fis.close();
                fos.close();

                System.out.println("歌曲" + songName + "已经成功复制到E:\\songs目录中");

            } else {
                System.out.println("您输入的歌曲名不存在");
            }
        }
    }


    private static void methodSelete(File dir) {
        File[] files = dir.listFiles();
        System.out.println("存在以下歌曲：");
        for (File file : files) {
            if (file.getName().endsWith(".mp3")) {
                String[] split = file.getName().split("\\.");
                System.out.println(split[0]);
            }
        }
    }
}
